<%@page import="archivos.BorrarDirectorio"%>
<%@page import="archivos.Sif"%>
<%@page import="archivos.UbicacionArchivos"%>
<%@page import="graphs.GraphADT"%>
<%@page import="utils.OS"%>
<%@page import="org.apache.commons.fileupload.FileUploadException"%>
<%@page import="org.apache.commons.fileupload.FileItem"%>
<%@page import="java.util.List"%>
<%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%>
<%@page import="java.io.File"%>
<%@page import="keggacces.Descarga"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="en">
    <head>
        <%@include file="../disenoWeb/title.html" %>
        <meta charset="utf-8">
        <%@include file="../disenoWeb/head.html" %>
        <script src="../disenoWeb/js/formulario.js" type="text/javascript"></script>

      
    </head>
    <body id="page2" >
        <div class="extra">
            <!--==============================header=================================-->
            <header>
                <%@include file="../disenoWeb/divHeader.jsp" %>
                <div class="menu-row">
                    <div class="menu-bg">
                        <div class="main">
                            <nav class="indent-left">
                                <ul class="menu wrapper">
                                    <%@include file="menuGoganpa.html" %>
                                </ul>
                            </nav>
                        </div>
                    </div>
                </div>
                <div class="row-bot">
                    <div class="center-shadow">
                    </div>
                </div>
            </header>

            <!--==============================content================================-->
            <section id="content">
                <div class="content-bg">
                    <div class="main">

                        <%                            /*Se recoge el organismo de la session*/
                            String carpetag = (String) session.getAttribute("carpetag");
                            String termino = (String) session.getAttribute("termino");
                            String ont = (String) session.getAttribute("ont");
                            Sif sf = new Sif();

                            /*Si el organismo es distinto de null, se recogera los ficheros que se han subido
                             por el usuario y se guardarán en una carpeta temporal, la cual se identifica con el
                             identificador de sesion*/
                            if (carpetag != null) {
                                /*Se obtiene la ruta raiz donde se encuentran todos los ficheros*/
                                String separator = OS.getDirectorySeparator();
                                String ubicacionWebInf = application.getRealPath(separator + "WEB-INF" + separator + "datos");

                                /*Se obtiene el identificador de sesion*/
                                String redesUsuario = session.getId();
                                String ubicacionMisRedes = ubicacionWebInf + separator + "go" + separator + redesUsuario;
                                File directorioInput = new File(ubicacionMisRedes);

                                /*Comienza el proceso de guardar los ficheros en la carpeta creada*/
                                DiskFileItemFactory factory = new DiskFileItemFactory();
                                factory.setSizeThreshold(1024);
                                factory.setRepository(new File(ubicacionMisRedes));

                                ServletFileUpload upload = new ServletFileUpload(factory);

                                try {
                                    List<FileItem> partes = upload.parseRequest(request);

                                    File file = null;
                                    File fOpcional = null;

                                    for (FileItem item : partes) {

                                        if (item.getFieldName().equals("file1")) {
                                            if (item.getName().equals("") == false) {
                                                file = new File(ubicacionMisRedes, item.getName());
                                                item.write(file);
                                                if (!file.getPath().endsWith(".sif")) {
                                                    BorrarDirectorio.borrarDirectorio(directorioInput);
                                                    directorioInput.delete();
                                                    String error = "Si";
                                                    session.setAttribute("error", error);
                                                }
                                            }
                                        }

                                    }

                                    if (file != null) {
                                        if (termino.equals("")) {
                                            fOpcional = new File(ubicacionMisRedes + separator + ont + ".sif");
                                        } else {
                                            fOpcional = new File(ubicacionMisRedes + separator + termino.substring(3) + ".sif");
                                        }
                                        /*Se comprueba si se ha subido un segundo fichero, si es así se pone
                                         el nombre en sesion para después poder pintar el grafo*/
                                        if (fOpcional != null) {
                                            String tituloFOpcional = fOpcional.getName();//Nombre incluyendo la extension (.sif)
                                            session.setAttribute("tituloFOpcional", tituloFOpcional);
                                            GraphADT grafoUser2 = sf.leeSIF(fOpcional);
                                            session.setAttribute("grafoUser2", grafoUser2);
                                        }

                                        /*Se coloca el nombre del fichero obligatorio en sesion para después
                                         poder pintar el grafo*/
                                        String tituloFObligatorio = file.getName();//Nombre incluyendo la extension (.sif)
                                        session.setAttribute("tituloFObligatorio", tituloFObligatorio);

                                        /*Se coloca una variable en session llamada "muestra" para saber luego en la tabla
                                         que se debe de mostrar*/
                                        String muestra = "comparar";
                                        session.setAttribute("muestra", muestra);

                                        /*Se crea la lista de genes de la red de entrada y se pone en sesion*/
                                        String ubicacionObli = ubicacionMisRedes + separator + tituloFObligatorio;
                                        File directorioMisRedesObli = new File(ubicacionObli);
                                        GraphADT grafoUser = sf.leeSIF(directorioMisRedesObli);
                                        session.setAttribute("grafoUser", grafoUser);

                                        List genes = grafoUser.getVertices();
                                        session.setAttribute("genes", genes);
                                        File directorioSesion = new File(ubicacionMisRedes);
                                        BorrarDirectorio.borrarDirectorio(directorioSesion);
                                        directorioSesion.delete();
                                    }
                                    if (session.getAttribute("error") != null) {
                        %><form action="formGoganpa.jsp" id="error" ></form>
                        <script>submitFormulario();</script>                                                      
                        <%
                        } else {
                        %>

                        <jsp:forward page="../utilidades/viewTables.jsp"/>

                        <%}
                                } catch (FileUploadException ex) {
                                    out.write("Error al subir archivo " + ex.getMessage());
                                }
                            } else {
                                out.write("El organismo es nulo");
                            }


                        %>
                    </div>
                    <div class="block"></div>
                </div>
            </section>
        </div>

        <!--==============================footer=================================-->
        <footer>
            <%@include file="../disenoWeb/footer.html" %>
        </footer>
        <script type="text/javascript"> Cufon.now();</script>
    </body>
</html>
